package com.ihr360.payroll.service.salarytask;

import com.ihr360.job.core.entity.StepExecutionLog;
import com.ihr360.job.core.model.ProgressInfo;
import com.ihr360.job.core.repository.PageData;

import java.util.List;

public interface SalaryTaskLogService {

    /**
     * 获取最新的pageSize条job执行日志
     *
     * @param jobExecutionIds 当前账期批次包含中的全部执行id记录
     * @param pageSize
     * @return
     */
    PageData<StepExecutionLog> topLogs(List<Long> jobExecutionIds, int pageSize, long lastLogId);

    /**
     * 获取最新的pageSize条job执行日志(不含TRACE级别)
     *
     * @param jobExecutionIds 当前账期批次包含中的全部执行id记录
     * @param pageSize
     * @return
     */
    PageData<StepExecutionLog> topLogsNoTrace(List<Long> jobExecutionIds, int pageSize, long lastLogId);

    /**
     * 获取最新的pageSize条job执行日志(仅ERROR级别)
     *
     * @param jobExecutionIds 当前账期批次包含中的全部执行id记录
     * @param pageSize
     * @return
     */
    PageData<StepExecutionLog> topLogsOnlyError(List<Long> jobExecutionIds, int pageSize, long lastLogId);

    /**
     * 获取lastLogId对应日志记录的前pageSize条job执行日志
     *
     * @param jobExecutionIds 当前账期批次中包含的全部执行id记录
     * @param pageSize
     * @param lastLogId
     * @return
     */
    PageData<StepExecutionLog> moreLogs(List<Long> jobExecutionIds, int pageSize, long lastLogId);

    /**
     * 获取lastLogId对应日志记录的前pageSize条job执行日志(不含TRACE级别)
     *
     * @param jobExecutionIds 当前账期批次中包含的全部执行id记录
     * @param pageSize
     * @param lastLogId
     * @return
     */
    PageData<StepExecutionLog> moreLogsNoTrace(List<Long> jobExecutionIds, int pageSize, long lastLogId);

    /**
     * 获取lastLogId对应日志记录的前pageSize条job执行日志(仅ERROR级别)
     *
     * @param jobExecutionIds 当前账期批次中包含的全部执行id记录
     * @param pageSize
     * @param lastLogId
     * @return
     */
    PageData<StepExecutionLog> moreLogsOnlyError(List<Long> jobExecutionIds, int pageSize, long lastLogId);

    /**
     * 获取错误日志数量
     *
     * @param executionId
     * @return
     */
    Long getErrorLogCount(List<Long> executionId);

    /**
     * 获取警告日志数量
     *
     * @param executionId
     * @return
     */
    Long getWarningLogCount(List<Long> executionId);

    /**
     * 获取核算任务的执行进度
     *
     * @param executionId
     * @return
     */
    ProgressInfo getProgressInfo(Long executionId);

}